package com.xjk.string;

/**
 * 字符串工具类
 */
public class StringUtils{

    public static final String BF = "before";// 在字符串前面

    public static final String BK = "back";// 在字符串后面

    /** 减号 ********/
    public static final String STRING_MINUS = "-";

    /** 逗号 ********/
    public static final String STRING_COMMA = ",";

    /**
     * 检查指定的字符串是否为空。
     * <ul>
     * <li>SysUtils.isEmpty(null) = true</li>
     * <li>SysUtils.isEmpty("") = true</li>
     * <li>SysUtils.isEmpty(" ") = true</li>
     * <li>SysUtils.isEmpty("abc") = false</li>
     * </ul>
     * 
     * @param value
     *            待检查的字符串
     * @return true/false
     */
    public static boolean isEmpty(String value){
        int strLen;
        if (value == null || (strLen = value.length()) == 0){
            return true;
        }
        for (int i = 0; i < strLen; i++){
            if ((!Character.isWhitespace(value.charAt(i)))){
                return false;
            }
        }
        return true;
    }

    /**
     * 检查对象是否为数字型字符串,包含负数开头的。
     */
    public static boolean isNumeric(Object obj){
        if (obj == null){
            return false;
        }
        char[] chars = obj.toString().toCharArray();
        int length = chars.length;
        if (length < 1){
            return false;
        }

        int i = 0;
        if (length > 1 && chars[0] == '-'){
            i = 1;
        }

        for (; i < length; i++){
            if (!Character.isDigit(chars[i])){
                return false;
            }
        }
        return true;
    }

    /**
     * 检查指定的字符串列表是否不为空。
     */
    public static boolean areNotEmpty(String...values){
        boolean result = true;
        if (values == null || values.length == 0){
            result = false;
        }else{
            for (String value : values){
                result &= !isEmpty(value);
            }
        }
        return result;
    }

    /**
     * 
     * @param pri
     * @param length
     * @param delimiter
     * @param position
     *            默认是加在后面的
     * @return
     * @Description
     * @Author xiaozhou.zhou
     * @Modifier xiaozhou.zhou
     */
    public static String getLengthStr(String pri,int length,char delimiter,String position){
        StringBuffer result = new StringBuffer(pri == null ? "" : pri);
        if (result.length() > length){
            // 长度大于指定的长度,将截取尾部
            result.delete(length, result.length());
        }else if (result.length() < length){
            // 得到要补充的长度
            int delimiterLength = length - result.length();
            for (int i = 0; i < delimiterLength; i++){
                if (BF.equals(position)){
                    result.insert(0, delimiter);
                }else{
                    result.append(delimiter);
                }
            }

        }
        return result.toString();
    }
}
